#!/usr/bin/env python2.7
import os
import requests
import shutil
import subprocess
from requests.auth import HTTPBasicAuth

PACKAGECLOUD_TOKEN = os.getenv('DOKKU_PACKAGECLOUD_TOKEN')


def download_file(filename, url):
    r = requests.get(url, stream=True)
    with open(filename, 'wb') as f:
        shutil.copyfileobj(r.raw, f)


def upload_file(filename):
    versions = [
        "xenial"
    ]
    cmd_template = "package_cloud push dokku/dokku/ubuntu/{0} {1}"
    for version in versions:
        cmd = cmd_template.format(version, filename)
        subprocess.call(cmd, shell=True)


def main():
    auth = HTTPBasicAuth(PACKAGECLOUD_TOKEN, '')
    base = requests.get('https://packagecloud.io/api/v1/repos/dokku/dokku/packages/deb/ubuntu/bionic.json',
                        auth=auth)
    data = base.json()
    urls = []
    for package in data:
        urls.append(package['versions_url'])

    download_urls = {}
    for url in urls:
        base = requests.get('https://packagecloud.io{0}'.format(url),
                            auth=auth)
        data = base.json()
        for version in data:
            download_urls['downloads/' + version['filename']] = version['download_url']

    for filename, download_url in download_urls.items():
        print("downloading {0}".format(filename))
        download_file(filename, download_url)
        upload_file(filename)


if __name__ == "__main__":
    main()
